A network address translator (NAT) is an IPv4 router that can translate Internet Protocol (IP) addresses and TCP/UDP port numbers of data packets as the packets are forwarded. For example, a small business network with multiple computers that connect to the Internet may employ an NAT for such connections. This type business would normally have to obtain a public IP address for each computer on the network from an Internet service provider (ISP). With the NAT, however, the small business can use private addressing and have the NAT map its private addresses to single or to multiple public IP addresses. The NAT is a common solution for the following combination of requirements: leveraging the use of a single connection, rather than connecting multiple computers, to the Internet; using private addressing; and providing access to Internet resources without having to deploy a proxy server. Also, these translators provide a type of firewall protection by hiding internal IP addresses and they enable companies to employ more internal IP addresses since there is no possibility of conflict with addresses outside the companies' private domain.
When a private user on a small business intranet connects to an Internet resource, the user's TCP/IP protocol creates an IP packet with the following values set in the IP and TCP or UDP headers (bold text indicates the fields that are affected by the NAT):                Destination IP Address: Internet resource IP address        Source IP Address: Private IP address        Destination Port: Internet resource TCP or UDP port        Source Port: Source application TCP or UDP port        
The source host or another router forwards this IP packet to the NAT, which translates the addresses of the outgoing packet as follows:                Destination IP Address: Internet resource IP address        Source IP Address: ISP-allocated public address        Destination Port: Internet resource TCP or UDP port        Source Port: Remapped source application TCP or UDP port        
The NAT sends the remapped IP packet over the Internet, wherein a responding computer sends back a response to the NAT.
Currently, the NAT is a major obstacle to end-user applications that desire to communicate with other applications across public networks such as the Internet. Also, due to the complexity of setting up the NAT, most users do not have the sophistication or desire to configure these components properly. Thus, several types of NAT traversal mechanisms have been employed to ease such burdens on the user. The most robust NAT traversal mechanism is the Traversal Using Relay (TURN). With respect to TURN, instead of establishing a direct connection between clients A and B which are behind the NAT, both clients A and B connect to a well-known server S, which relay messages between them. Relay has the advantage that it works as long as the server S is assessable for both clients. However this places an undue processing and network burden on relay servers that act as intermediaries between peers. The delay between the clients also may increase as well. Another set of techniques include Simple Traversal of UDP through NAT (STUN) and Teredo which is designed to traverse IPv6 protocol across NAT. Through STUN/Teredo, two clients behind Cone-NAT may establish direct connection by using a well-known server S to relay initial connection messages, and to identify the public remapped source application TCP or UDP port for the NAT of each client. These protocols and others do not traverse symmetric-NAT type systems, however.
One major obstacle in NAT technology is that there is a plurality of differing protocols that may be employed for translating network traffic. For instance, many consumer or home systems utilize Cone, Full Cone, or Restricted Cone NAT technologies whereby some routers may behave as a Cone NAT for UDP traffic and behave as a symmetric NAT for TCP traffic. In corporate situations, symmetric NAT along with hardware or software firewalls are more likely to be employed. Currently, in order to communicate over the differing types of protocols, intense manual configurations are required to properly configure the NAT to communicate over one of the above mentioned protocols. However, many network situations may require more than one protocol to be employed in order for communications to occur between remote applications.